#!/bin/sh
set -e
set -x

[ ! -d /root/.ethereum/geth/chaindata ] && geth init /config/genesis.json

: <<'NOTE'
这里是注释

geth1.13.14命令行选项：

--networkid=12120
--http
--http.api=eth,txpool,debug,web3,net,personal,engine
--http.addr=0.0.0.0
--http.corsdomain=*
--http.port=9547
--ws
--ws.addr=0.0.0.0
--ws.port=9457
--ws.origins=*
--ws.api=eth,txpool,debug,web3,net,personal
--authrpc.vhosts=*
--authrpc.addr=0.0.0.0
--authrpc.port=8554
--authrpc.jwtsecret=/node1/jwtsecret
--bootnodes=enode://4eeed1a5b3517d23a3fac2cac6c9c7ec84412c79378e2d08feab7bf34a174bef316bfb73f3b435845d79fea2d4530836476ec3c1f937b504081a3d3e5d322f72@geth-bootnode:30305
--mine
--miner.gasprice=1000000000
--miner.etherbase=0x4dcf326f7c53AF9ab1Fbde6c19C96F4413Ac326F
--datadir=/node3
--allow-insecure-unlock
--unlock=0x4dcf326f7c53AF9ab1Fbde6c19C96F4413Ac326F
--password=/node3/password.txt
--syncmode=full

NOTE

# geth 1.6.7 版本命令
# [ $RPC ] && RPCOPT="--rpc --rpcaddr 0.0.0.0 --rpcport 8545 --rpcapi eth,net,web3,shh,txpool,debug,admin,personal"
# [ $WS ] && WSOPT="--ws --wsaddr 0.0.0.0 --wsapi eth,net,web3,network,debug,txpool"
# [ $SINGER ] && MINE="--mine --etherbase $ACCOUNT --unlock $ACCOUNT --password /config/password"

: <<COMMENT
# geth 1.13.14 版本命令
注意：命令中不能使用空格，必须使用 = 连接
COMMENT
[ $RPC ] && RPCOPT="--authrpc.vhosts=* --authrpc.addr=0.0.0.0 --authrpc.port=8551"
[ $WS ] && WSOPT="--ws --ws.addr=0.0.0.0 --ws.port=8546 --ws.origins=* --ws.api=eth,txpool,debug,web3,net,personal"
[ $HTTP ] && HTTPOPT="--http --http.addr=0.0.0.0 --http.corsdomain=* --http.port=8545 --http.api=eth,txpool,debug,web3,net,personal,engine"
[ $SINGER ] && MINE="--mine --miner.etherbase=$ACCOUNT --unlock=$ACCOUNT --password=/config/password"
[ $NETWORKID ] && NETWORK="--networkid=$NETWORKID"

ENODE=`bootnode --nodekey=/bootnode_keys/boot.key -writeaddress`
BOOTNODEIP=`getent hosts poaboot | awk '{ print $1 }'`
BOOTNODE="--bootnodes enode://$ENODE@[$BOOTNODEIP]:30301"

KEYSTORE=/root/.ethereum/
cp -r /config/keystore $KEYSTORE

geth \
    $RPCOPT \
    $WSOPT \
    $HTTPOPT \
    $MINE \
    $NETWORK \
    $BOOTNODE \
    --allow-insecure-unlock \
    --verbosity $LOGGING_LEVEL
